/*******************************************************************************
 * Copyright (c) 2011 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.takaharabooks.mhp3rd;

import android.content.Context;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;

public class DB_Base extends SQLiteOpenHelper
{
	protected Context m_csContext;
	
	protected SQLiteDatabase	m_csDB = null;
    // 設定情報
    //public Preferences_Setting m_csSetting;
	
	public DB_Base(Context context, String strDBName, int nVer)
	{
		super(context, strDBName, null, nVer);
		// ☆子で定義
	}
	
	// 破棄されるときはＤＢを閉じる
	protected void finalize(){
		CloseDB();
	}
	    
    //データベースオブジェクトを取得する（データベースにアクセスするとDBがない場合は作成される。）  
	public void InitDBBase(){
		if( null == m_csDB ){
			m_csDB = getWritableDatabase();
		}
	}
	
	// DBをclose
	public void CloseDB(){
		if( null != m_csDB && m_csDB.isOpen() ){
			m_csDB.close();
			m_csDB = null;
		}
	}
	
	// @Override onCreate
	public void onCreate(SQLiteDatabase db)
	{
		// ☆子で定義
    }
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
	{
		// ☆子で定義
	}
	
		
	// DB書き込み(ContentValuesを使用する場合）
	public void writeDB(ContentValues values, String strDBTableName, String StrWhere){
		int colNum = m_csDB.update(strDBTableName, values, StrWhere, null);
		if(colNum == 0){ 
			m_csDB.insert(strDBTableName, "", values);
		}
	}
	
	// DBにInsert(ContentValuesを使用する場合）
	public void InsertDB(ContentValues values, String strDBTableName){
		m_csDB.insert(strDBTableName, "", values);
	}
	
	// DB読み込み（SQL文を直接発行,　戻り値　Cursor）
	public Cursor readDB(String strSQL) throws Exception{
		Cursor csCursor = m_csDB.rawQuery(strSQL, null);
		if(csCursor.getCount() == 0){
			throw new Exception();
		}
		return csCursor;
	}
	
	// DB読み込み（SQL文を直接発行,　一行戻ってくる場合　戻り値　int）
	public int readDBInt(String strSQL, String strColumn) throws Exception{
		SQLiteCursor csCursor = (SQLiteCursor)m_csDB.rawQuery(strSQL, null);
		if(csCursor.getCount() == 0){
			throw new Exception();
		}
		int nColumn = csCursor.getColumnIndex(strColumn);
		csCursor.moveToFirst();
		int nValue = csCursor.getInt(nColumn);
		csCursor.close();
		return nValue;
	}
	
	// DB読み込み（SQL文を直接発行,　一行戻ってくる場合　戻り値　String）
	public String readDBString(String strSQL, String strColumn) throws Exception{
		SQLiteCursor csCursor = (SQLiteCursor)m_csDB.rawQuery(strSQL, null);
		if(csCursor.getCount() == 0){
			throw new Exception();
		}
		int nColumn = csCursor.getColumnIndex(strColumn);
		csCursor.moveToFirst();
		String strValue = csCursor.getString(nColumn);
		csCursor.close();
		return strValue;
	}
	
	// DB読み込み
	public int readDB(String strDBTableName, String[] strCulumn) throws Exception{
		Cursor c = m_csDB.query(strDBTableName, strCulumn, "id=0", null, null, null, null, null);
		if(c.getCount()==0) throw new Exception();
		c.moveToFirst();
		int nValue = c.getInt(1);
		c.close();
		return nValue;
	}
	
	// DB読み込み（SQL文を直接発行,　戻り値　Cursor）
	public void DeleteDB(String strDBTableName, String StrWhere){
		m_csDB.delete(strDBTableName, StrWhere, null);
		
	}
}